1.计算机网络概述

1、什么是Internet?

1.1 从具体构成角度

​ 零件的角度

  • 节点
    • 主机及其上运行的应用程序
    • 路由器、交换机等网络交换设备
  • 边:通信链路
    • 接入网链路:主机连接到互联网的链路
    • 主干链路:路由器间的链路
  • 协议

1.2 从网络互联设备的角度

  • 协议控制发送 、接收消息
    • 如TCP、IP、HTTP、FTP、PPP
  • Internet:"网络的网络“
    • 松散的层次结构,互联的ISP
    • 公共的Internet VS 专用的intranet
  • Internet 标准
    • RFC: Request for comments
    • IETF: Internet Engineering Task Force

1.3 协议

定义了在两个或多个通信实体(对等层的实体)之间交换的报文格式和次序,以及在报文传输和/或接受或其他事件方面所采取的动作;

1.4 从服务的角度

  • 使用通信设施进行通信的分布式应用
    • Web、VoIP、email、分布式游戏、电子商务、社交平台……
  • 通信基础设施为apps提供编程接口(通信服务)
    • 将发送和接收数据的apps与互联网连接起来
    • 为app应用提供服务类型、类似于邮政服务
      • 无连接不可靠服务
      • 面向连接的可靠服务

2、网络边缘

2.1 补充

  • 网络结构
    • 主机
    • 应用程序
  • 网络核心
    • 互连着的路由器
    • 网络的网络
  • 接入网、物理媒体
    • 有线或者无线通信链路

2.2 网络边缘

  • 端系统(主机)
    • 运行应用程序
    • 如Web、email
    • 在“网络的边缘”
  • 客户/服务器模式
    • 客户端向服务器请求、接受服务
    • 如Web浏览器 / 服务器:email客户端 / 服务器
  • 对等(peer-peer) 模式
    • 很少(甚至没有)专门的服务器
    • 如 Gnutella、KaZaA,Emule
    • 每个节点既是服务器也是客户端,互相请求、分布式系统,无客户 / 服务器模式的缺陷如迅雷等。

2.3 网络边缘:采用网络设施的面向连接服务

  1. 目标:在端系统之间传输数据
  2. 握手:在数据传输之前做好准备
    • 人类协议中:你好、你好
    • 两个通信主机为连接建立状态
  3. TCP-传输控制协议(Transmission Control Protocol)
    • Internet上面面向连接的服务

TCP服务

  • 可靠的、按顺序地传送数据
    • 确认和重传
  • 流量控制
    • 发送方不会淹没接收方
  • 拥塞控制
    • 当网络拥塞时,发送方降低发送速率

2.4 网络边缘:采用基础设施地无连接服务

  1. 目标:在端系统之间传输数据

    1. 无连接服务
  2. UDP-用户数据报协议(User Datagram Protocol)

    • 无连接

    • 不可靠数据传输

    • 无流量控制

    • 无拥塞控制

  3. 使用TCP的应用

    • HTTP(Web),FTP(文件传送),Telnet(远程登陆),SMTP(email)
  4. 使用UDP的应用

    • 流媒体、远程会议、DNS、Internet电话

3、网络核心

3.1 网络核心

  1. 网络核心
  2. 基本问题:数据怎样通过网络进行传输
    1. 电路交换
    2. 分组交换
      • 将要传送的数据分成一个个单位:分组(pocket)
      • 将分组从一个路由器传到相邻路由器(hop),一段段最终从源端传送到目标端
      • 每段:采用链路的最大传输能力(带宽)

3.2 网络核心:电路交换

端到端的资源被分配给从源端到目标端的呼叫叫"call"

  1. 独享资源:不同享
    • 每个呼叫一旦建立起来就能够保证性能
  2. 如果呼叫没有数据发送,被分配的资源就会被浪费
  3. 通常被传统电话网络采用

3.3 网络核心:电路交换

为呼叫预留端-端资源

  1. 链路带宽、交换能力
  2. 专用资源:不共享
  3. 保证性能
  4. 要求建立呼叫连接
  5. 网络资源(如带宽)被分成片
    • 为呼叫分配片
    • 如果某个呼叫没有数据,则其资源片处于空闲状态(不共享)
    • 将带宽分成片
      • 频分
      • 时分
      • 波分

3.4 电路交换不适合计算机之间的通信

  1. 连接建立时间长
  2. 计算机之间的通信有突发性,如果使用线路交换,则浪费的片较多
    • 即使这个呼叫没有数据传输,其所占据的片也不能被别的呼叫使用
  3. 可靠性不高?

3.5 网络核心:分组交换

  1. 以分组为单位存储-转发方式 + 网络带宽资源不再分为一个个片,传输时使用全部带宽 + 主机之间传输的数据被分成一个个分组
  2. 资源共享、按需使用
    • 存储-转发:分组每次移动一跳(hop)
      • 在转发之前,节点必须收到整个分组
      • 延迟比线路交换要大
      • 排队时间

3.6 分组交换:存储-转发

  1. 被传输到下一个链路之前,整个分组必须到达路由器:存储-转发
  2. 在一个速率为R bps的链路,一个长度为L bits的分组的存储延时:L/R s

3.7 分组交换:排队延迟和丢失

  • 如果到达速率>链路的输出速率
    • 分组将会排队,等待传输
    • 如果路由器的缓存用完了,分组将会被抛弃

3.8 网络核心的关键功能

  1. 路由:决定分组采用的源到目标的路径
    • 路由算法
  2. 转发:将分组从路由器的输入链路转移到输出链路

3.9 分组交换 VS 电路交换

同样的网络资源,分组交换允许更多用户使用网络!

分组交换是“突发数据的胜利者?”

  1. 适合于对突发式数据传输
    • 资源共享
    • 简单,不比建立呼叫
  2. 过度使用会造成网络拥塞:分组延时和丢失
    • 对可靠的数据传输需要协议来约束:拥塞控制

3.10 分组交换网络:存储-转发

  1. 分组交换:分组的存储转发一段一段从源端传到目标端,按照有无网络层的连接,分为:
    1. 数据报网络:
      • 分组的目标地址决定下一跳
      • 在不同的阶段,路由可以改变
      • 类似:问路
      • Internet
    2. 虚电路网络
      • 每个分组都带标签(虚电路标识VCID),标签决定下一跳
      • 在呼叫建立时决定路径,在整个呼叫中路径保持不变
      • 路由器维持每个呼叫的状态信息
      • X.25和ATM

3.11 数据报(datagram)的工作原理

  • 在通信之前,无需建立起一个连接,有数据就传输
  • 每一个分组都独立路由(路径不一样,可能会失序)
  • 路由器根据分组的目标地址进行路由

3.12 总结

数据报是按地址找人,不事先确定路好不好走;

虚电路是先去一次,熟悉一下路线,再进行发送

4、接入网和物理媒体

4.1 Q:怎样将端系统和边缘路由器连接?

  1. 住宅接入网络
  2. 单位接入网络(学校、公司)
  3. 无线接入网络
  4. 注意:
    • 接入网络的带宽(bits per second)
    • 共享/专用

4.2 住宅接入:modern

  1. 将上网数据==调制==加载音频信号上,在电话线上传输,在局端将其中的数据==解调==出来;反之亦然
    • 调频
    • 调幅
    • 调相位
    • 综合调制
  2. ==拨号调制解调器==
    • 56Kbps的速率直接接入路由器(通常更低)
    • 不能同时上网和打电话;不能总是在线

4.3 接入网:digital subscriber line(DSL)

  1. 采用==现存的==到交换局DSLAM的电话线
    • DSL线路上的数据被传到互联网
    • DSL线路上的语音被传到电话网
  2. <2.5 Mbps上行传输速率(typically<1 Mbps)
  3. <24 Mbps下行传输速率(typically<10 Mbps)

4.4 接入网:线缆网络

有线电视信号线缆双向改造

FDM:在不同频段传输不同信道的数据,数字电视和上网数据(上下行)

  1. HFC:hybird fiber coax
    • 非对称:最高30Mbps的下行传输速率,2 Mbps上行传输速率
  2. ==线缆和光纤网络==将每个家庭用户接入到 ISP 路由器
  3. 各用户==共享==到线缆头端的接入网络
    • 与DSL不同,DSL每个用户一个专用线路到CO(central office)

4.5 住宅接入:电缆模式

img

4.6 接入网:家庭网络

img

4.7 企业接入网路

img

  1. 经常被企业或者大学等机构采用
    • 10 Mbps,100 Mbps,1Gbps,10Gbps传输率
    • 现在,端系统经常直接接到以太网交换机上

4.8 无线接入网络

  1. 各无线端系统共享无线接入网络(端系统到无线路由器)
    • 通过基站或者接入点

img

4.9 物理媒体

  1. Bit:在发送-接收时间传播
  2. 物理链路:连接每个发送-接收对之间的物理媒体
  3. 导引型媒体:
    • 信号沿着固体媒介被导引:同轴电缆、光纤、双绞线
  4. 非导引型媒体
    • 开放的空间传输电磁波或者光信号,在电磁或者光信号中承载数字数据
  5. 双绞线(TP)
    • 两根绝缘铜导线拧合

4.10 物理媒体:同轴电缆、光纤

  1. 同轴电缆:
    • 两根同轴的铜导线
    • 双向
    • 基带电缆
    • 宽带电缆
  2. 光纤和光缆
    • 光脉冲,每个脉冲表示一个bit,在玻璃纤维中传输
    • 高速:点到点的高速传输(如10Gbps-100Gbps传输速率)
    • 低误码率:在两个中继器之间可以有很长的距离,不受电磁噪声的干扰
    • 安全

4.11 物理媒介:无线链路

  1. 开放空间传输电磁波,携带要传输的数据
  2. 无需物理:”线缆“
  3. 双向
  4. 传播环境效应’
    • 反射
    • 吸收
    • 干扰
  5. 无线链路类型‘
    • 地面微波
    • LAN
    • wide-area
    • 卫星

5、Internet结构和ISP

5.1 互联网络结构:网络的网络

  1. 端系统通过==接入ISPs==(Internet Service Providers)连接到互联网

    • 住宅,公司和大学的ISPs
  2. 接入ISPs相应的必须是互联的

    • 因此任何2个端系统可互相发送分组到对方
  3. 导致的“网络的网路”非常复杂

    • 发展和演化是通过==经济的==和==国家的==政策来驱动
  4. 竞争:如果全局ISP是有利可为的业务,那会有竞争者

  5. 合作:通过ISP之间的合作可以完成业务的扩展,肯定会有互联,对等互联的结算关系

    img

  6. 然后业务会细分(全球接入和区域接入),区域网络将出现,用于将接入ISPs连接到全局ISPs

img

  1. 然后==内容提供商网络(Internet Content Providers==,e.g.,Google,Microsoft,Akamai)可能会构建它们自己的网络,将它们的服务、内容更加靠近端用户,向用户提供更好的服务,减少自己的运营支出。

img

  1. 在网络的最中心,一些为数不多的充分连接的大范围网络(分布广、节点有限、但是之间有着多重连接)

    • “tier-1" commercial ISPs,国家或者国际范围的覆盖

    • ==content provider network==:将它们的数据中心接入ISP,方便周边用户的访问;通常私有网络之间用专网绕过第一层ISP和区域

5.2 Internet结构:network of networks

  1. 松散的层次模型
  2. ==中心:第一层ISP==(如UUNet,BBN/Genuity,Sprint,AT&T)国家/国际覆盖,速率极高
    • 直接与其他第一层ISP相连
    • 与大量的第二层ISP和其他客户网络相连

  1. 第二层ISP:更小些的(通常是区域性的)ISP

    • 与一个或多个第一层ISPs,也可能与其他第二层ISP

      img

  2. 第三层ISP与其他本地ISP

    • 接入网(与端系统最近)

      img

5.3 互联网结构:网络的网络

  1. 很多内容提供商(如:Google)可能会部署自己的网络,连接自己的在各地的DC(数据中心),走自己的数据
  2. 连接若干local ISP和各级(包括一层)ISP,更加靠近用户

5.4 ISP之间的连接

  1. POP:高层ISP面向客户网络的接入点,涉及费用结算
    • 如一个低层ISP接入多个高层ISP,多宿(multi home)
  2. 对等接入:2个ISP对等互联,不涉及费用结算
  3. IXP;多个对等ISP互联互通之处,通常不涉及费用结算
    • 对等接入
  4. ICP自己部署专用网络,同时和各级ISP连接

6、分组延时、丢失和吞吐量

6.1 分组丢失和延时是怎样发生的?

  1. 在路由器缓冲区的分组队列
    • ==分组到达链路的速率超过了链路输出的能力==
    • 分组等待排到队头、被传输

img

6.2 四种分组延时

  1. ==节点处理延时:==

    • 检查bit级差错
    • 检查分组首部和决定将分组导向何处
  2. ==排队延时==

    • 在输出链路上等待传输的时间
    • 依赖于路由器的拥塞程度

    img

  3. ==传输延时==

    • R=链路带宽(bps)
    • L=分组长度(bits)
    • 将分组发送到链路上的时间=L/R
    • 存储转发延时
  4. ==传播延时==

    • d=物理链路的长度

    • s=在媒体上的传播速度

    • 传播延时=d/s

      img

    1. 节点延时

      dnodal=dproc+dqueue+dtrans+dprop

      • dproc=处理延时

        • 通常是微秒数量级或更少
      • dqueue=排队延时

        • 取决于拥塞程度
      • dtrans=传输延时

        • =L/R,对低速率的链路而言很大(如拨号),通常为微秒级到毫秒级
      • dprop=传播延时

        • 几微秒到几百毫秒

6.3 分组丢失

  1. 链路的队列缓冲区容量有限
  2. 当分组到达一个满的队列时,该分组将会丢失
  3. 丢失的分组可能会被前一个节点或者源端系统重传,或者根本不重传

6.4 吞吐量

  1. 吞吐量:在源端和目标端之间传输的速率(数据量/单位时间)
    • ==瞬间吞吐量==:在一个时间点的速率
    • ==平均吞吐量==:在一个长时间内的平均值

7、协议层次及服务模型

7.1 协议层次

  1. 网络功能繁杂:数字信号的物理信号承载、点到点、路由、rdt、进程区分、应用等
  2. 现实来看,网络的许多构成元素和设施:
    • 主机
    • 路由器
    • 各种媒体的链路
    • 应用
    • 协议
    • 硬件、软件

7.2 例子:两位异地哲学家的交流

img

7.3 航线的功能层次

img

  1. ==层次化方式实现复杂网络功能==:
    • 将网络复杂的功能分层功能明确的==层次==,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能:==服务==
    • 本层协议实体相互交互执行本层的==协议动作==,目的是实现本层功能,通过接口为上层提供更好的服务
    • 在实现本层协议的时候,直接==利用了下层所提供的服务==
    • 本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+更下层所提供的服务

7.4 服务和服务站点

  1. 服务(Service):低层实体向上层实体提供它们之间的通信的能力
    • 通信用户(service user)
    • 服务提供者(service provider)
  2. 原语(primitive):上层使用下层服务的形式,高层使用底层提供的服务,以及低层向高层提供服务都是通过服务访问原语来进行交互的–形式
  3. 服务访问点SAP(Service Access Point):上层使用下层提供的服务通过层间的接口—地点;
    • 例子:邮箱
    • 地址(address):下层的一个实体支撑着上层的多个实体,SAP有标志不同上层实体的作用
    • 可以有不同的实现,队列
    • 例子:传输层的SAP:端口(port)

7.5 服务的类型

  1. 面向连接的服务(Connection-oriented Service)
    • ==连接==:两个通信实体为进行通信而建立的一种结合
    • 面向连接的服务通信的过程:建立连接,通信,拆除连接
    • 面向连接的服务的例子:网络层的连接被成为虚电路
    • 适用范围:对于大的数据块要传输;不适合小的零星报文
    • 特点:保序
    • 服务类型:
      • 可靠的信息流 传送页面(可靠的获得,通过接收方的确认)
      • 可靠的字节流 远程登陆
      • 不可靠的连接 数字化的声音
  2. 面向无连接的服务(Connectionless Service)
    • 无连接的服务:两个对等层实体在通信前不需要建立一个连接,不预留资源;不需要通信双方都是活跃;(例:寄信)
    • 特点:不可靠、可能重复、可能失序
    • IP分组,数据包
    • 适用范围:适合传输零星数据
    • 服务类型:
      • 不可靠的数据报 电子方式的函件
      • 有确认的数据报 挂号信
      • 请求回答 信息查询

7.6 服务和协议

  1. 服务与协议的区别
    • 服务:低层实体向上层实体提供它们之间的通信的能力,通过原语来操作的,垂直
    • 协议:对等层实体之间在相互通信的过程中,需要遵循的规则的集合,水平
  2. 服务与协议的联系
    • 本层==协议的实现==要靠下层提供的服务来实现
    • 本层实体通过协议为上层==提供更高级的服务==

7.7 分层处理和实现复杂系统系统的好处?

==对付复杂的系统==

  1. 概念化:结构清晰,便于标示网络组件,以及描述其相互关系
    • 分层参考模型
  2. 结构化:模块化更易于维护和系统升级
    • 改变某一层的服务的实现不影响系统中的其他层次
      • 对于其他层次而言是透明的

结合微服务的好处结合记忆

  • 服务按照业务来划分,每个服务通常只专注于某一个特定的业务、所需代码量小,复杂度低、易于维护。
  • 每个微服都可以独立开发、部署和运行,且代码量较少,因此启动和运行速度较快
  • 每个服务从设计、开发、测试到维护所需的团队规模小,一般 8 到 10 人,团队管理成本小。
  • 采用单体架构的应用程序只要有任何修改,就需要重新部署整个应用才能生效,而微服务则完美地解决了这一问题。在微服架构中,某个微服务修改后,只需要重新部署这个服务即可,而不需要重新部署整个应用程序。
  • 在微服务架构中,开发人员可以结合项目业务及团队的特点,合理地选择语言和工具进行开发和部署,不同的微服务可以使用不同的语言和工具。
  • 微服务具备良好的可扩展性。随着业务的不断增加,微服务的体积和代码量都会急剧膨胀,此时我们可以根据业务将微服务再次进行拆分;除此之外,当用户量和并发量的增加时,我们还可以将微服务集群化部署,从而增加系统的负载能力。
  • 微服务能够与容器(Docker)配合使用,实现快速迭代、快速构建、快速部署。
  • 微服务具有良好的故障隔离能力,当应用程序中的某个微服发生故障时,该故障会被隔离在当前服务中,而不会波及到其他微服务造成整个系统的瘫痪。
  • 微服务系统具有链路追踪的能力。

7.8 Internet协议栈

自顶向下

  1. ==网络层==:网络应用
    • 为人类用户或者其他应用进程提供网络应用服务
    • FTP、SMAP、HTTP、DNS
  2. ==传输层==:主机之间的数据传输
    • 在网络层提供的端到端通信基础上,细分为进程到进程,将不可靠的通信变成可靠的通信
  3. ==网络层==:为数据报从源到目的选择路由
    • 主机主机之间的通信,端到端通信,不可靠
    • IP,路由协议
  4. ==链路层==:相邻网络节点间的数据传输
    • 2个相邻2点的通信,点到点通信,可靠或不可靠
    • 点对点协议PPP,802.11(wifi),Ethernet
  5. ==物理层==:在线路上传送bit

7.9 ISO/OSI 参考模型

  1. ==表示层==:允许应用解释传输的数据,例如加密,压缩,机器相关的表示转换
  2. ==会话层==:数据交换的同步,检查点,恢复
  3. 互联网协议栈没有这两层

TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。

网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

7.10 各层次的协议数据单元

  1. 应用层:报文(message)
  2. 传输层:报文段(segment):TCP段,UDP数据报
  3. 网络层:分组packet(如果无连接方式:数据报datagram)
  4. 数据链路层:帧(frame)
  5. 物理层:位(bit)